package com.application.outdoor.InvoikeServices;

import java.util.ArrayList;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import android.content.Context;
import android.util.Log;

import com.application.Activity.CommonUtilities;
import com.application.Network.Protocol;
import com.application.outdoor.pojo.NguoiDungPOJO;
import com.google.android.gcm.GCMRegistrar;

public class HeThongInvoike extends BaseInvoike {

	public HeThongInvoike() {
		super();
		url += "/HeThong";
	}

	// -2: Server bị die
	// 0: dk đc
	// -3: ko thể đăng ký GCM
	public int register(final Context context) throws Exception {
		Log.d(Protocol.TAG, "HeThongInvoike.register");
		int rs = 0;

		GCMRegistrar.checkDevice(context);
		GCMRegistrar.checkManifest(context);

		// Kiểm tra device đã đăng ký với GCM chưa
		final String regId = GCMRegistrar.getRegistrationId(context);
		Log.d(Protocol.TAG, "reg ID= " + regId);
		if (regId == "") {
			Log.d(Protocol.TAG, "Tiến hành đăng ký với GCM" + regId);
			GCMRegistrar.register(context, Protocol.SENDER_ID);
		} else {
			// Tiến hành đăng ký trên MES-server			
			ArrayList<NameValuePair> par = new ArrayList<NameValuePair>();
			par.add(new BasicNameValuePair(Protocol.CMD, Protocol.DANG_KY_DEVICE));
			par.add(new BasicNameValuePair(Protocol.REG_ID, regId));
			String dangKy = post(url, par);
			Log.d(Protocol.TAG, "Đăng ký trên MES=" + dangKy);
			
			if (dangKy.trim().equals("true") || dangKy.trim().equals("false")) {
				//Đã đăng ký
				rs=0;
			} else {
				rs=-2;
			}

		}
		if (GCMRegistrar.getRegistrationId(context).equals(""))
			rs = -3;
		
		Log.d(Protocol.TAG, "HeThongInvoike.register= "+rs);
		return rs;

	}

	// Sai tài khoản: -1
	// Server bị die: -2
	// Throw exeption nếu ko kết nối đc
	// Đăng nhập ok: 0
	public int DangNhap(String tenDangNhap, String matKhau, String regID) throws Exception {
		Log.d(Protocol.TAG, "HeThongInvoike.DangNhap");
		ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.DANG_NHAP));
		params.add(new BasicNameValuePair(Protocol.TEN_DANG_NHAP, tenDangNhap));
		params.add(new BasicNameValuePair(Protocol.MAT_KHAU, matKhau));
		params.add(new BasicNameValuePair(Protocol.REG_ID, regID));
		int dangNhap = 0;
		String rs = post(url, params);
		Log.d(Protocol.TAG, "Đăng nhập xong");
		if (rs.trim().equals("false")) {
			dangNhap = -1;
		} else {
			NguoiDungPOJO nd = new NguoiDungPOJO();
			boolean parse = nd.parse(rs);
			if (parse) {
				if (CommonUtilities.nguoiDung == null) {
					CommonUtilities.nguoiDung = new NguoiDungPOJO();
				}
				CommonUtilities.nguoiDung.setId(nd.getId());
				CommonUtilities.nguoiDung.setTenDangNhap(nd.getTenDangNhap());
				dangNhap = 0;
			} else {
				dangNhap = -2;
			}
		}
		Log.d(Protocol.TAG, "HeThongInvoike.DangNhap rs= "+dangNhap);
		return dangNhap;
	}

	// public static String layTinNhan(String tenDangNhap) throws Exception {
	// Log.d(Protocol.TAG, "Lấy tin nhắn");
	//
	// ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
	// params.add(new BasicNameValuePair(Protocol.CMD, Protocol.LAY_TIN_NHAN));
	// params.add(new BasicNameValuePair(Protocol.TEN_DANG_NHAP, tenDangNhap));
	// String rs = post(URL, params);
	// return rs;
	// }

	public void guiTinNhan(String nguoiGui, String nguoiNhan, String noiDung, int loaiTinNhan) throws Exception {

		ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.GUI_TIN_NHAN));
		params.add(new BasicNameValuePair(Protocol.NGUOI_GUI, nguoiGui + ""));
		params.add(new BasicNameValuePair(Protocol.NGUOI_NHAN, nguoiNhan + ""));
		params.add(new BasicNameValuePair(Protocol.NOI_DUNG, noiDung));
		params.add(new BasicNameValuePair(Protocol.MSG_TYPE, loaiTinNhan + ""));
		String rs = post(url, params);
		Log.d(Protocol.TAG, "Gửi tin nhắn");
	}

	public String getContact(String tenDangNhap) throws Exception {
		ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.DANH_SACH_NHOM));
		params.add(new BasicNameValuePair(Protocol.TEN_DANG_NHAP, tenDangNhap));
		String rs = post(url, params);
		return rs;
	}

	public String getSoTinNhanOffline(String nguoiDung) throws Exception {
		ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.SO_LUONG_TIN_NHAN_OFFLINE));
		params.add(new BasicNameValuePair(Protocol.NGUOI_DUNG, nguoiDung));
		String rs = post(url, params);
		return rs;
	}

	public String layTinNhan(String nguoiDung) throws Exception {
		ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.LAY_TIN_NHAN));
		params.add(new BasicNameValuePair(Protocol.NGUOI_DUNG, nguoiDung + ""));
		String rs = post(url, params);
		return rs;
	}

	public String capNhatDaDocTinNhan(int idTinNhan) throws Exception {
		ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.XOA_TIN_NHAN));
		params.add(new BasicNameValuePair(Protocol.ID, idTinNhan + ""));
		String rs = post(url, params);
		return rs;
	}

	public String dongYVaoNhom(int idNhom, int idTinNhan, String tenDangNhap) throws Exception {
		ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.DONG_Y_VAO_NHOM));
		params.add(new BasicNameValuePair(Protocol.ID, idTinNhan + ""));
		params.add(new BasicNameValuePair(Protocol.ID_NHOM, idNhom + ""));
		params.add(new BasicNameValuePair(Protocol.NGUOI_DUNG, tenDangNhap));
		String rs = post(url, params);
		return rs;
	}

	public void setRole(String nguoiDung, String quyen) {
		// TODO Auto-generated method stub

	}

}
